#ifndef HOBJECT_H
#define HOBJECT_H

#include <QObject>
#include <QUuid>
#include <QVariant>

class HObject
{
public:
    HObject(){
        msID = QUuid::createUuid().toString();
    }
    virtual ~HObject(){}

    QString getName(){
        return msName;
    }
    void setName(const QString& name){
        msName = name;
    }

    QString getUUID(){
        return msID;
    }

    QVariant getProp(const QString &key)
    {
        return mhashProp.value(key);
    }

    void setProp(const QString &key, QVariant var)
    {
        if(mhashProp.contains(key))mhashProp.remove(key);

        mhashProp.insert(key,var);
    }

    QStringList getPropKeys()
    {
        return mhashProp.keys();
    }

    void removeProp(const QString &key)
    {
        mhashProp.remove(key);
    }


protected:
    QString msName;
    QString msID;
    QHash<QString,QVariant> mhashProp;

};

#endif // HOBJECT_H
